# 负责整个项目的配置信息

class Config:
    # 配置数据库的信息
    # 创建数据库的链接
    HOSTNAME = 'localhost'
    PORT = '3306'
    DATABASE = 'flasktest3'
    USERNAME = 'root'
    PASSWORD = 'root'
    # 用户名，密码，主机名，端口号，文件名 # charset=utf8mb4' 这里主要是根据数据库的编码格式来的
    DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8mb4'.format(USERNAME,
                                                                     PASSWORD,
                                                                     HOSTNAME,
                                                                     PORT,
                                                                     DATABASE
                                                                     )

    # 把链接数据库的参数设置到app中
    SQLALCHEMY_DATABASE_URI = DB_URI
    # 是否追踪数据的修改，我们设置成不需要跟踪
    SQLALCHEMY_TRACK_MODIFICATIONS = False

    # 日志的配置
    LOGGING_LEVEL = 'DEBUG'  # 默认日志的级别
    LOGGING_FILE_DIR = 'logs/'  # 日志保存的文件位置
    LOGGING_FILE_MAX_BYTES = 300 * 1024 * 1024  # 日志最大保存300MB
    LOGGING_FILE_BACKUP = 10  # 日志最多保存10个文件

    # 采用Redis保存数据，默认是内存，需要安装flask-redis
    RATELIMIT_STORAGE_URL = 'redis://192.168.56.141:6379/0'
    # 限制策略，移动窗口：时间窗口会自动变化
    RATELIMIT_STRATEGY = 'moving-window'

    # redis数据库的链接地址,使用数据库1来缓存数据，包括短信验证码
    REDIS_URL = "redis://192.168.56.141:6379/1"


# 开发环境下的配置信息
class DevelopmentConfig(Config):  # 继承数据库配置信息的父类
    # 设置成允许调试
    DEBUG = True
    # 允许打印SQL语句
    SQLALCHEMY_ECHO = True


# 生成环境类中的配置信息
class ProductConfig(Config):
    DEBUG = False
    SQLALCHEMY_ECHO = False
